package com.taoyuan.hotel.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.taoyuan.hotel.dao.AdminDao;
import com.taoyuan.hotel.entity.Admin;
import com.taoyuan.hotel.service.intf.AdminService;
import com.taoyuan.hotel.utils.PassUtils;
import com.taoyuan.hotel.utils.StringUtils;
import com.taoyuan.hotel.vo.PageBean;
import com.taoyuan.hotel.vo.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpSession;

@Service
public class AdminServiceImpl implements AdminService {
    private static String key="IU3T+bigbvwTRy04q2C+6A==";
    @Autowired
    private AdminDao dao;
    @Override
    public R save(Admin admin) {
        //1.验证参数
        if(admin!=null && StringUtils.isNotEmpty(admin.getName(),admin.getPassword())){
            //2.校验 用户名是否存在
            Admin a=dao.selectByName(admin.getName());
            //3.验证
            if(a==null){
                //可以注册
                //4.把密码加密 密文 存储在数据库中
                admin.setPassword(PassUtils.aesenc(key,admin.getPassword()));
                //5.操作数据库 存储数据
                if(dao.add(admin)>0){
                    //成功
                    return R.ok();
                }
            }
        }
        return R.fail();
    }
    @Override
    public R del(int id) {
        if (id > 0) {
            if (dao.del(id) > 0) {
                return R.ok();
            } else {
                return R.fail();
            }
        } else {
            return R.fail();
        }
    }

    @Override
    public R update(Admin admin) {
        if (dao.update(admin) > 0) {
            //修改成功
            return R.ok();
        } else {
            //修改失败
            return R.fail();
        }
    }

    @Override
    public R login(Admin admin, HttpSession session) {
        //1.验证参数
        if (admin != null && StringUtils.isNotEmpty(admin.getName(), admin.getPassword())) {
            //2.校验 用户名是否存在
            Admin a = dao.selectByName(admin.getName());
            //3.验证
            if (a != null) {
                //账号存储 比对密码  密文比较
                if(a.getPassword().equals(PassUtils.aesenc(key,admin.getPassword()))){
                    //成功
                    session.setAttribute("admin",a);
                    return R.ok();
                }
            }
        }
        return R.fail();
    }



    @Override
    public PageBean queryPageWhere(String name, int page, int limit) {
        //1.验证 查询条件 如果为"" 那么赋值为null
        if (!StringUtils.isNotEmpty(name)){
            name=null;
        }else {
            name="%"+name+"%";//包含模糊查询
        }
        //2.分页
        PageHelper.startPage(page, limit);
        //3.获取分页结果
        PageInfo<Admin> pageInfo=new PageInfo<>(dao.selectWhere(name));
        //4.返回分页的数据
        return PageBean.bean(pageInfo.getTotal(), pageInfo.getList());
    }

    @Override
    public R delBatch(int[] ids) {
        //1.验证参数
        if (ids!=null && ids.length>0){
            if (dao.delBatch(ids)>0){
                return R.ok();
            }else {
                return R.fail();
            }
        }else {
            return R.fail();
        }
    }
}
